import jwt
import os
from typing import Dict, Any, Optional
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 从环境变量获取JWT密钥，如果不存在则使用默认值
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY", "YOUR_SECRET_KEY_HERE")
JWT_ALGORITHM = os.getenv("JWT_ALGORITHM", "HS256")

def verify_token(token: str) -> Optional[Dict[str, Any]]:
    """
    验证JWT令牌并返回载荷
    
    Args:
        token: JWT令牌
        
    Returns:
        令牌载荷或None（验证失败时）
    """
    try:
        # 解码JWT令牌，验证签名
        payload = jwt.decode(
            token, 
            JWT_SECRET_KEY, 
            algorithms=[JWT_ALGORITHM]
        )
        return payload
    except jwt.ExpiredSignatureError:
        # 令牌已过期
        return None
    except jwt.InvalidTokenError:
        # 令牌无效
        return None